A file system is a method for storing and organizing computer files and the data they contain to make it easy to find and access the data. File systems may use a data storage device such as hard disk or CD-ROM and involve maintaining the physical location of the files; they might provide access to data on a file server by acting as clients for a network protocol (e.g., NFS, SMB, or IP clients), or they may be virtual and exist only as an access method for virtual data (e.g., procfs). A file system is distinguished from a directory service. More formally, a file system is a special purpose database for the storage, organization, manipulation, and retrieval of data. There are different types of file systems, for example, disk file systems, flash file systems, database file systems, transactional file systems, network file systems, special purpose file systems and flat file systems etc. In contrast, a directory is an entity in a file system, which contains a group of files and/or other directories.
Conventional approaches to directory structures limit the flexibility with which objects can be described, and how multiple objects can be compared with each other. Specifically, conventional directory structures typically associate an object with a unique descriptor (such as a filename contained in a directory). These descriptors themselves can then be recursively associated with another higher-level descriptor. Thus, a hierarchical descriptor structure is realized (such as a file system directory), wherein there is a unique chain of hierarchically ordered descriptors that lead to an object. In a typical file system, there can be multiple paths to a single object such as a file using hard/symbolic links, but one can infer only one path by a descriptor traversal starting from the object itself. This system is referred to as a simple directory structure.
A different notion of object descriptors arises when one uses multiple object descriptors to describe a single object. These are similar to the idea of tags used in current Web based applications, such as Flickr, deli.cio.us, etc., where a single file, bookmark or picture is described using various key words. However, the structure of these descriptors is rather flat in that there is no ascribed relationship between the various descriptors codified in the descriptor structure. While there are different ways to describe both a given object and multiple objects associated with any given descriptor, it is not possible to infer relationships between multiple descriptors. This system is referred to as a flat-tag structure.